The invention relates to parsing messages communicated over a data network.
Packet-based data networks are widely used to link various nodes, such as personal computers, servers, gateways, and so forth. Networks include private networks, such as intranets including local area networks and wide area networks, and public networks, such as the Internet. The increased availability of such data networks has improved accessibility among nodes coupled to the data networks. Popular forms of communications across such data networks include electronic mail, file transfer, web browsing, and other exchanges of digital data.
With the increased capacity and reliability of data networks, voice communications over data networks have become possible. Voice communications over packet-based data networks are unlike voice communications in a conventional public switched telephone network (PSTN), which provides users with dedicated, end-to-end circuit connections for the duration of each call. Communications over data networks, such as IP (Internet Protocol) networks, are performed using packets that are sent in bursts from a source to one or more destination nodes. Voice data sent over a data network share the network bandwidth with conventional non-voice data (e.g., electronic mail, file transfer, web access, and other traffic).
In addition to voice communications over data networks, other forms of communications are also possible, such as video conferencing and distribution of multimedia data. Various standards have been proposed to handle and control such communications over data networks. For example, a multimedia data and control architecture has been developed by the Internet Engineering Task Force (IETF). The protocols that are part of the IETF multimedia data and control architecture include the Resource Reservation Protocol (RSVP), as described in Request for Comments (RFC) 2205, for reserving network resources; the Real-Time Transport Protocol (RTP), as described in RFC 1889, for transporting real-time data and providing quality of service (QoS) feedback; the Real-Time Streaming Protocol (RTSP), as described in RFC 2326, for controlling delivery of streaming media; the Session Announcement Protocol (SAP) for advertising multimedia sessions by multicast; the Session Description Protocol (SDP), as described in RFC 2327, for describing multimedia sessions; and the Session Initiation Protocol (SIP), as described in RFC 2543, which establishes, maintains, and terminates multimedia sessions or calls. Such audio or multimedia sessions or calls may include multimedia conferences over the Internet, telephone calls over the Internet, and multimedia distribution (such as by multicast) over the Internet.
To establish, control, and terminate such communications sessions using the above protocols, messages are exchanged between participants and intermediate systems interconnecting the participants. Such messages are in some type of predetermined syntax. For example, SIP is a text-based protocol that uses a predetermined syntax for its messages, which may be exchanged to initiate communications sessions as well as to invite members to participate in a session.
The syntax defined for the messages typically include delimiters to separate portions of a string of characters. Thus, a string in the message may include a number of tokens (each token including one or more characters) separated by the predefined delimiters. Standard delimiters may include quotes, semicolons, brackets, parentheses and others. However, a string of characters may be complicated by the fact that within certain pairs of delimiters, other delimiter characters may be present. Such other delimiter characters may either be nested delimiters, for example, or they may be characters not intended to be delimiters. Such nesting of delimiter characters complicates parsing of messages, especially if it is desired to extract entire tokens that include such delimiter characters.
A need thus exists for improved parser engines and methods for messages that are communicated over data networks.